- Size & Layout
- Each PCI function has 256 bytes of configuration space.
- First 64 bytes = Configuration Header (mandatory).
- Remaining 192 bytes = Optional, device-specific features.
- System Configuration Process
- Step 1: Boot ROM firmware does the initial setup.
- Step 2: Operating System (OS) may reconfigure devices and reassign resources after loading.
- → Configuration can happen twice (once by firmware, once by OS).
- Header Types
- Type 0 Header → Function is a normal device (not a bridge).
- Type 1 Header → Function is a bridge (creates another PCI bus).
- The Header Type field is located in Dword 3, Byte 2 of the configuration header.
- Enumeration (Discovery Process)
- The OS (or firmware) scans the PCI bus to discover devices/functions.
- One of the first steps: check the Header Type to know if the function is:
- A device (Type 0)
- Or a bridge (Type 1)